package com.autoerp.dao.jdbc.servico;

import java.sql.Connection;
import java.util.List;

import org.mentabean.BeanSession;

import com.autoerp.dao.servico.DemandaDAO;
import com.autoerp.model.servico.DemandaEntity;


/**
 * 
 * Classe DemandaDAOJdbc, implementação da interface DemandaDAO.
 */
public class DemandaDAOJdbc implements DemandaDAO {

	/** The session. */
	private BeanSession session;

	/** The conn. */
	private Connection conn;

	/**
	 * Instantiates a new peça dao jdbc.
	 * 
	 * @param session
	 *            the session
	 */
	public DemandaDAOJdbc(BeanSession session) {
		this.session = session;
		this.conn = session.getConnection();

	}

	/**
	 * Excluir a demanda atraves do seu identificador.
	 * 
	 * @param id_demanda
	 *            identificador da demanda
	 */
	public void deletar(Integer id_demanda) {
		// Cria instancia da demanda
		DemandaEntity demanda = new DemandaEntity();
		// Seta identificador da demanda
		demanda.setId_demanda(id_demanda);

		// Busca e exclui a demanda
		if (session.load(demanda)) {
			session.delete(demanda);
		} else {
			throw new IllegalStateException("Demanda não encontrada!");
		}

	}

	/**
	 * Localizar a demanda atraves do seu identificador.
	 * 
	 * @param id_demanda
	 *            identificador da demanda
	 * @return instancia da demanda
	 */
	public DemandaEntity buscarPorId(Integer id_demanda) {
		// Cria instancia da demanda
		DemandaEntity demanda = new DemandaEntity();
		// Seta identificador da demanda
		demanda.setId_demanda(id_demanda);

		// Busca e retorna a demanda
		if (session.load(demanda)) {
			return demanda;
		}

		// Retorna null se a demanda não for encontrada
		return null;
	}

	/**
	 * Localizar demanda.
	 * 
	 * @param demanda
	 *            instancia da demanda
	 * @return Lista de demanda
	 */
	public List<DemandaEntity> buscarDemanda(DemandaEntity demanda) {
		// / Retorna lista de demandas encontrados.
		return session.loadList(demanda);
	}

	/**
	 * Salvar a demanda no banco de dados.
	 * 
	 * @param demandaEntity
	 *            instancia da demanda
	 */
	public void salvar(DemandaEntity demandaEntity) {
		// Salva demanda no banco
		session.insert(demandaEntity);

	}

}
